Skip to content

Conversation

@daxpedda
Copy link
Contributor

@daxpedda daxpedda commented Jul 19, 2025

This PR implements a set of types for Montgomery points with a full coordinate system and corresponding Curve448 type with a CurveArithmetic implementation. Our current MontgomeryPoint x-coordinate only remains in place for use with X448 and is renamed to MontgomeryXpoint.

For context: the x-only coordinate system can't implement a full set of arithmetic operations because of the missing y-coordinate. While the y-coordinate could be recovered, it is costly and is missing the sign. Some protocols exist that set the sign of the y-coordinate, which is why we have some methods in place for MontgomeryXpoint to do exactly that.

I made sure to add a full set of conversion methods between the new types.

I'm aware that I'm proposing very large changes that have not previously been discussed. I'm happy to take any feedback.
It should be much easier to review than #1291 on account that it can be done commit by commit.

Take 2 on #1291.

@carloskiki
Copy link
Contributor

Do you have any protocol in mind where this would be used?

@daxpedda
Copy link
Contributor Author

daxpedda commented Jul 20, 2025

Yes, I am planning on using it with OPRF inside OPAQUE.

@daxpedda daxpedda requested a review from tarcieri July 26, 2025 12:59
@daxpedda daxpedda force-pushed the curve448-4 branch 2 times, most recently from dce0a03 to ce00799 Compare July 30, 2025 09:56
@daxpedda daxpedda force-pushed the curve448-4 branch 2 times, most recently from 227d8d8 to 44f8c53 Compare August 3, 2025 01:07
@daxpedda daxpedda mentioned this pull request Aug 3, 2025
55 tasks
@daxpedda daxpedda force-pushed the curve448-4 branch 5 times, most recently from 11c14bc to c84b4f5 Compare September 2, 2025 20:43
@daxpedda daxpedda force-pushed the curve448-4 branch 3 times, most recently from ca0c86b to c55371c Compare September 6, 2025 22:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants